﻿using System.Text;

namespace ProduceBasicData.Api
{
    /// <summary>
    /// MD5加密帮助类
    /// </summary>
    public static class MD5HashHelper
    {
        /// <summary>
        /// MD5加密（处理null和编码问题）
        /// </summary>
        public static string Encrypt(string input)
        {
            // 处理null输入
            if (string.IsNullOrEmpty(input))
            {
                throw new ArgumentNullException(nameof(input), "加密字符串不能为空");
            }

            using (var md5 = System.Security.Cryptography.MD5.Create())
            {
                // 使用UTF8编码转换（避免中文等特殊字符加密不一致）
                byte[] inputBytes = System.Text.Encoding.UTF8.GetBytes(input);
                byte[] hashBytes = md5.ComputeHash(inputBytes);

                // 转换为16进制字符串
                StringBuilder sb = new StringBuilder();
                foreach (byte b in hashBytes)
                {
                    sb.Append(b.ToString("x2")); // "x2"确保两位数，补0
                }
                return sb.ToString();
            }
        }
    }
}
